package com.sinosoft.dsp.platform.components.portal.iteration;

import java.util.List;
import java.util.Map;

import org.primefaces.model.SortOrder;

import com.sinosoft.dsp.platform.exception.SinoPlatformException;

/**
 * 懒加载的数据表格ViewBean
 * 
 * @author 潘巍（PeterPan）
 * @since 2011-5-26 上午07:47:42
 * 
 */
public interface ISinoLazyDataTableViewBean<T extends IDataTableObject> extends
		ISinoDataTableViewBean<T> {
	/**
	 * 根据起始和结束行号获得结果集
	 * 
	 * @param first
	 *            第一行号
	 * @param pageSize
	 *            页面行数
	 * @param sortField
	 *            用于排序的字段
	 * @param sortOrder
	 *            是否进行排序
	 * @param filters
	 *            筛选的字段和值
	 * @return
	 */
	public List<T> fetchPage(int first, int pageSize, String sortField,
			SortOrder sortOrder, Map<String, String> filters)
			throws SinoPlatformException;

	/**
	 * 获得结果集总数
	 * 
	 * @param sortField
	 *            用于排序的字段
	 * @param sortOrder
	 *            是否进行排序
	 * @param filters
	 *            筛选的字段和值
	 * 
	 * @return
	 */
	public int fetchRowCount(String sortField, SortOrder sortOrder,
			Map<String, String> filters) throws SinoPlatformException;

	/**
	 * 获得懒加载模式
	 * 
	 * @return
	 * @throws SinoPlatformException
	 */
	public SinoLazyDataModel<T> getLazyModel() throws SinoPlatformException;

}
